查看原文
其他

黑客你怂了,看到这个工具你眼圈红了。。。。

史中 浅黑科技 浅黑科技 2023-11-28


记一个黑客看了会流泪,白客看了会沉默的工具


文 | 史中


前两天逛知乎,看到两张 gif 图。


2002年世界杯,小罗吊射英格兰门将希曼,球直挂后角,断送了英格兰的世界杯旅程。



十多年后,小罗再次吊射希曼,球却高出横梁。



已经中年发福的希曼伸手一指,仿佛在说:臭小子,你又来?两人相逢一笑,十年恩仇烟消云散。中哥笑着笑着,眼角却有点湿润。


就在准备拂去泪水之时,作为一个科普作者,不忘初心砥砺前行的中哥突然想到了一些有趣的观点,于是一边流泪一边给你们打字。。。


其实我一直觉得,好的球员和好的黑客是一样的


好的球员同时掌握两个技能:不仅能绕过对方防守,还能用极骚的脚法一击致命。


好的黑客也同时掌握两个技能:不仅能找到系统的漏洞,还能用极骚的代码利用这个漏洞,拿下对方的系统控制权。


以防你没 get 到中哥的重点,我用骚粉的字再说一遍:


黑客攻击一个系统,要分两步。


第一步,找到一个漏洞。这相当于小罗各种花式踩单车绕开对方的防守队员;


第二步,利用这个漏洞。这相当于小罗绕开对方的防守队员之后,吊射希曼那临门一脚。


注意,这两步缺一不可。


缺了任何一步,小罗就秒变李毅大帝。


说到这,就该进我们今天的主线故事了。


今天,中哥给你介绍一个“神器”,这个神器可以把“黑客中的李毅”加持成为“黑客中的亨利”。。。没错,就是这么神奇!


朕护球像亨利




Let's ROCK



(0)先介绍主角



邢新宇,邢叫兽是我的好盆友。


虽说是好盆友,但我们从没面基过,因为我在北京,他在宾州(注意,不是山东滨州,是米国宾州,我暂时还没想到有神马好的理由让我跨过大半个地球来他)。


邢新宇 邢叫兽


邢叫兽可不是一般的叫兽,我称他是“网络安全界的爱迪生”。他工作在美国宾州州立大学,每隔几个月,总有一个骚极了的发明问世。比如前两天他就发明了一套“人工智能读心术”,可以读懂人工智能在想什么。。。(如果你有兴趣,可以点鸡下面的链接:《对于人工智能,一万个我爱你,不如一个我懂你》


他有一位“好基友”,也是我的盆友,叫做 Jimmy Su。此人身形魁梧,力能扛鼎。。。


京东安全 Jimmy Su


Jimmy 是京东安全硅谷研究院的老大,同样是一位网络安全大牛,他的日常是为京东研究反黑客的最新武器。这么说吧,黑客在代码世界被他完虐,换到现实世界直接撸袖子跟他约架,还是会被他扔出五米远。这是一个字典里没有“撸瑟”二字的男人。


就在刚才,这两个神一样的男人同时跟我语音通话,介绍了他们合作研究的这个“黑客神器”。神器有多叼呢?这么说吧,我是全程跪着听完电话的。。。


下面正式开始介绍这个工具。




(1)谜一样的操作系统



把操作系统比作一个“黑暗迷宫”是最恰当不过的了。


为什么这样说呢?


中哥给你画图解释解释:


每当你输入一个数据,它就会在程序里顺着流程前行。你可以想象,自己举着这个数据,在伸手不见五指的迷宫里顺着路向前走;



遇到分叉路口,系统就会根据你手上数据的值为你选择一个方向,然后推你过去;


每一次遇到分岔路口,你都会被指派一个方向。最后的最后,你会走到一个光明的出口。一旦出去,你手里的“数据”就变成了一个“结果”,系统就完成了一组运算。


所以说,你进入迷宫的时候手里拿了怎样的数据,其实就几乎注定了你会在哪个出口出来。(是几乎,不是绝对)




刚才说的,是一个正常系统工作的样子。那么假设你是个黑客,攻击系统时,它是神马样子呢?


是这个样子滴:


你捧了一个特别奇葩的数据进入这个迷宫;



开始遇到分岔路口,系统还知道怎样为你分配路线;


你一直走走走走啊走,走到九月九,突然到了一个路口。程序说,纳尼?好像前面那几条路都不适合你,你走墙吧。。。




于是,你就被程序一个骚操作,从墙里推出去了。。。


现在,你到了一个“未知的空间”。所谓“未知空间”,就是一个你在迷宫里正常地走,永远不会到达的地方。。。



恭喜你大佬,这时你已经成功找到了一个系统漏洞~~~~



别急,你还记得中哥在文章一开始让你注意的骚粉字体吗?找到系统漏洞,只是攻击系统的第一步,你还需要更难的第二步:利用这个漏洞!!!!!




(2)神器登场



我们接着上面的图说。


你虽然到了未知的空间,但是并没有离开这个迷宫,而你如果想彻底控制这个迷宫,需要找到一个隐秘的出口。


我把刚才那张图再给你看一下,你看,从有些“未知空间”是可能通向有隐秘出口的。


这个出口无法得到正常的结果,

却可以让你逃离“迷宫”,

用上帝视角控制程序。


当然在现实的程序里,这个迷宫比灵魂画手中哥画的复杂一万倍。


所以,未知空间分为两类:


有一种是可能让黑客走向迷宫之外的,例如 A 区域;(这种区域对于系统来说才危险)


有一种是会把黑客困死在迷宫里的,例如 B 区域。(这种区域对于系统来说不危险)



所以,从一个顶级黑客的角度看,要完成一次漂亮的进攻,首先要从正常的迷宫里发现“未知空间” A 区域(这对应着漏洞发现),然后再从 A 区域找到脱离迷宫的隐秘出口“X”(这对应着漏洞利用。。。)


好的,各位屏幕前突出的腰间盘同志们,现在给你们提个问题:


在一个非常非常非常肥肠复杂的迷宫里,你即使发现了一个“未知空间”,也很难知道这个未知空间究竟有没有可能通向隐秘出口“X”,这肿么办呢?


在以往的经验中,是这样操作哒:


黑客一旦进入“未知空间”,之后都会根据自己的经验,手动在黑暗里探索,左摸右摸,七上八下,九浅一深。


但是这样有个弊端,它其实很考验具体黑客的技巧:


一个身经百战经验丰富的NB黑客,可能几下就找到了出口“X”;


一个腰膝酸软体力不支的弱鸡黑客,可能走一天还是在“鬼打墙”。


如果因为黑客找不到出口,就说明这个“未知区域”是个无害的 B 类,未免有点武断。因为这个区域很可能是有出口的,只是这位黑客没有找到。。。


这就比较烦了呀。一个系统漏洞被爆出来,它到底是可以被利用的高危漏洞呢?还是根本没前途的低危漏洞呢?这个判断对于进攻一方的黑客来说很重要,对于防守一方的企业来说也很重要啊!


肿么办?


你说肿么办,找邢叫兽和 Jimmy Su 呗!!


呼~~~长舒一口气。。。说了这么多,他们研究的神器可算要登场了。。。(阿鲁表情)


神器名为:



对不起,掏错了。。。重来。神器名为:




FUZE,它怎么用呢?


首先,你要有一个洗净备用的漏洞。如果还沿用迷宫的比喻,就是说,在迷宫里你要已经找到了一个“未知区域”。(这事儿靠自己,爱莫能助。。。)


然后,从“未知区域”到出口“X”的事儿,就交给“自动化程序”吧!


自动化程序的操作分为两步。



@@@这第一步,叫做“模糊测试”。


模糊测试,其实是一种开挂的玩法。


它相当于你玩游戏的时候,快遇到 BOSS 之前存一个档。存档之后就不怕了嘛,可以用各种姿势随便浪,总有一次偶然的机会,你能浪过这个 BOSS。


具体来说是酱紫的:


从“未知区域”开始往前走,遇到前面有岔路的时候就存档,然后把此时的系统状态复制很多份,形成无数个平行世界,在每一个平行世界分别随便丢一个不同的数据过去,看看系统分别会指示我们往哪里走。


总有一次,我们会被指引走到一个地方,这个地方有点特殊。虽然还在黑暗的迷宫里,但是,我们能感觉到不远处有光线通过缝隙照进来。此时,不要犹豫,马上把接力棒交给第二步!



@@@这第二步,叫做“符号执行”。


符号执行相当于什么呢?相当于“穷举法”。


不太明白是不是,听我给你解释。


你还记不记得,当年 Windows95 上有一个神·屏保程序,就叫做“迷宫”。


Win95 这个迷宫屏保长这样。

中哥似乎暴露年龄了。。。

不管了,为了科普拼了!!!


这个迷宫是自动生成的,有一个人用第一人称视角在走。他是怎么走的呢?有三个原则:


遇到路口就向左拐,

没机会左拐就直走,

只能右拐时才右拐。


最终,它一定能走出这个迷宫。因为遇到路口就向右拐,就可以“遍历”这个迷宫(就是走遍这个迷宫),既然能遍历,肯定早晚能找到出口啊。。。


所以,所谓符号执行,意思就是遍历这个迷宫剩余的部分。如果它果真有出口的话,最终肯定能找到出口。如果它真的没出口的话,我们就宣布放弃。


如此一来,我们就借助自动化的工具完成了从“未知空间”到迷宫出口“X”的探索过程!





(3)几个烧脑的问题



我知道,可能有同学到这里已经掉队了,没关系,回去再复习一下小标题(2),相信你会理解的。已经理解的童鞋,可能会有一些小疑问。



疑问1:你这种 FUZE 的方法,首先用的是“模糊测试”而不是“符号执行”,这说明你一开始并没有遍历每一种路径,也就是说即使理论上存在出口“X”,你也不能百分之百保证找到它吧??


答:没错。


在黑暗中进行“模糊测试”,并不能保证能试探出每一条理论上存在的路径。这就好像你虽然在打 BOSS 之前存档了,但就是打了一万次还是没能干掉 BOSS。遇到这种情况,中哥只能说:


好像又暴露了年龄


在 FUZE 程序里,每一次重新来过,都需要耗费时间和算力。如果你算了几个小时,甚至算了几天,都没有结果,也许就想放弃了。


但是请注意,理论上 FUZE 程序可以无限期一直运行。程序跑的时间越长,找到出口的可能性就越大。(这就像生活,咬牙多坚持一秒,就可能迎来人生的转折,但很多人倒在了黎明)



疑问2:等等,“符号执行”这种方法不是可以遍历迷宫吗?既然这样,为神马不在一开始就用它??如果在一开始就用,岂不是肯定可以找到出口?


答:没错。


但是,还是刚才那个道理:遍历迷宫需要尝试每一条路,每走一条路,都需要耗费时间和算力。


如果从一进入“未知空间”,就开始使用“遍历”的符号执行,岔路太多,要消耗的计算资源是天文数字。很可能走到死你都出不去。


说到这里中哥想到了一个电影《暗袭》,讲了几位少女在地下迷宫里,由于寻找出口的策略不佳,被怪兽当点心吃光光的悲惨故事。。


《暗袭》

非常醒脑的一张插图

看中哥的文章

你!睡!不!着!


邢叫兽还告诉我,如果过早地使用“符号执行”方法,还可能会遇到很多“死循环”的漩涡(程序从A到B到C再到A),但是,一旦在迷宫里走过了某些特殊的点位,往后就不太会遇到死循环的状况了,这时就应当果断地把探索方法换为“符号执行”。


上面这个示意图里,

你走着走着就会鬼打墙,

在一个地方空转,

永远出不去。



疑问3:吹了半天牛,你这套 FUZE 自动漏洞利用系统真的比黑客“人肉操作”更好使吗?


答:没错。


邢叫兽可是教授耶,出家人不打诳语。


他找来网上的15个漏洞。这15个漏洞都是以前被顶级黑客发现的,黑客们也分别对这些漏洞进行了利用的尝试。但是,他们只找到了其中5个漏洞的利用方法。(也就是说,他们找到了15个“未知空间”,最终却只从其中的5个空间成功离开了迷宫。)


邢叫兽用 FUZE 试了一下,您猜怎么着?发现了其中12个都有利用方法。这12个完整包含人类黑客找到的5个。也就是说,除了人找到的5个,机器还多找到了7个。这大概可以称得上“智商碾压”了。。。



疑问4:这个叫 FUZE 的工具,可以找到很多以前找不到的漏洞利用方式,岂不是会帮助黑客做坏事?


答:没错。


著名的宅男创业家王欣说过:技术无罪。


你应该这样看:这个 FUZE 可以让以前很多不能被利用的漏洞可以利用了。固然会让黑客多了很多武器,但是对于防御方——各个企业来说,他们也可以利用 FUZE 提前发现自己系统里的漏洞利用方式,从而在黑客进攻之前,就做好防御啊。


实际上,Jimmy Su 已经把 FUZE 这套系统用在自家京东服务器的防护当中了。他们先用 FUZE 把京东的服务器测试一遍,在重要的地方提前埋好地雷,如果有攻击者进来,肯定是枪林弹雨尸骨无存,中道崩殂驾鹤西归。


2018年8月,FUZE 刚刚实验成功,邢教授和 Jimmy Su 就把它拿到了世界顶尖黑客大会 BlackHat 上,向全世界做了一次扬眉吐气的演讲;然后,他俩手拉手把这个系统给开源了。全世界的人现在都能在 GitHub 上下载 FUZE 自己玩了。。。



疑问5:所以,邢教授和 Jimmy Su 是真爱吗??


答:没错。


接下来是高能预警,小标题(4)是给专业一点的人士看的,如果你不懂的话,没关系,可以直接跳到(5),不影响对本文的理解,么么哒。。。




(4)几个更烧脑的问题



能坚持到这里的童鞋,应该都是内行了。肯定知道我刚才说的模糊测试就是“Fuzzing”,知道我刚才说的符号执行就是“Symbolic Execution”。


这两种方法一点都不新鲜,很多玩二进制挖洞的黑客都在用。


你可能有几个小问题:


疑问1、挖洞用的模糊测试和符号执行,和邢教授说的漏洞利用中的模糊测试和符号执行,有啥区别呢?


答:我个人觉得,在漏洞利用这一步使用模糊测试和符号执行更难。


这是因为在漏洞利用中,涉及到各大系统都有的“漏洞利用缓解机制”。


举个小栗子:Linux 分为内核态和用户态两个空间。一般的漏洞利用,需要先把内核里的栈迁移到用户态。但是,有两种坑爹的“漏洞利用缓解机制” SMEP 和 SMAP,就是专门防止黑客搞这种小动作的。


说白了,在现在这个世道,挖漏洞容易,利用漏洞才难。


之前在 DEF CON 上火爆一时的 CGC 机器人安全攻防大赛,参赛选手们其实就已经在用自动化的软件来挖洞了。但是,这些机器人几乎没有考虑漏洞利用的事情,因为为了照顾机器人的水平,组委会已经把几乎所有的漏洞利用缓解机制都关闭了。



疑问2、FUZE 寻找漏洞利用的方式,应该不是纯模糊测试,而是融入了一些人类黑客的经验吧?


答:他们确实是融入了人类的经验。


邢教授告诉我,他们定义了20多个“内存空间状态”,一旦达到这样的状态,就认为是漏洞利用成功了。


举两个例子:


1、如果寄存器已经可以执行任意命令,说明“控制流”已经被劫持了,这就是一种理想的“内存空间状态”


2、如果内存的任意地址已经可以被写入任意命令,说明“数据流”已经被劫持,这也是一种理想的“内存空间状态”。


而 FUZE 所做的,就是让机器来模拟人类的“套路”,努力让内存空间靠近这20种状态中的一种,从而达到击穿系统的目的。


目前邢教授和 Jimmy Su 开发的 FUZE 程序,只对 Linux 内核的漏洞利用进行了适配,至于 MacOS 和 Windows,理论上都是一致的,只不过需要更多的时间和额外的适配工程量。




(5)活在未来的人



经过中哥苦口婆心的解释,现在你应该明白:一个李毅般的黑客如何借助神器 FUZE 获得亨利一样的脚法了。


目测在 BlackHat 上演讲之后,这个世界级的安全神器,会在黑客的世界里掀起一个不小的波澜。因为,无论是对进攻者还是防御者来说,都有了一件 NB 的新武器。


在挂断电话之前,我认真地问了 Jimmy Su 最后一个问题:京东不是个百货商店么,为神马你们会对安全这么在意,以至于要研究出一个世界级的安全工具呢?


这个世界级的黑客工具,至少可以在两方面帮助京东:



1、知道优先修复哪个漏洞。


对于京东来说,治下有无数服务器和系统。这些服务器就像幼儿园的小朋友一样数量多,品种杂,有的还有点熊,所以这些服务器携带的漏洞也是多种多样的。


这么多漏洞摆在安全攻城狮面前,他们要怎么办呢?


你可能会说,都修了就行啊!对不起,你说的不是攻城狮,是钢铁侠。在人手有限的情况下,如何保证把有生力量用于加固最危险的地方,才是真实世界中我们要考虑的内容。


有了 FUZE,哪个漏洞可以造成致命伤害,就一目了然了。工程师只要按照危害程度从高到低,吹着口哨顺次修复就好了。


2、抵御高级攻击。


可以说,漏洞就是武器。普通的漏洞相对容易找到,它就算是常规武器;而一个系统级的漏洞非常难以找到,但它就像是核武器。


在以前,一家公司虽然被“核武器”攻击的概率很低,但现在看来,随着地下黑产的泛滥,核武器越来越多地被普通黑客拿到,用来进行高级攻击。一旦遭受“核武器”攻击,后果不堪设想。


而听完介绍你可能已经明白, FUZE 恰恰就是用来发现这种核武器攻击路径的。有了这个工具,可以让京东遭受“暗算”的可能性大大降低。


Jimmy Su 语重心长地说:


因为金钱的诱惑,黑客对于企业的攻击比你们想象中多得多。企业越大,被各种姿势攻击的可能性就越大。


而京东的服务器上,存储的并不仅仅是京东的资产,更多的是用户数据。而我们作为用户安全的守卫者,守土有责!!


听得出来,他的话言辞恳切。


从这个角度来说,作为京东的用户,我很欣慰。。。


没错,最近两年无数黑客大咖都在对外发出警告,黑客界“核武器平民化”的趋势越来越快。在未来,很可能一些心智不成熟的小黑客,或者十恶不赦的坏黑客,手里都能掌握“核武器漏洞”。


而为了应对这样的未来,必须从现在开始研制更先进的武器。


历史告诉我们,活在未来的人,从来都值得我们敬畏。



另:


文头的小罗和希曼,来自之乎用户 @于衷 在问题“历史上有没有令人感动的足球比赛?”中的回答。也许只有过来人,方知其中味。


李毅是值得尊重的球员。他像每个年轻人一样,忠于自己的梦想和失业,他始终没有借足球以外的东西宣传自己。退役后仍然踏踏实实地继续从事着解说、推广等足球领域的工作。


想要下载 FUZE 研究的,可以自行上  Gayhub  Github 上找找,找不到再问我要。。。




再自我介绍一下吧。我叫史中,是一个倾心故事的科技记者。我的日常是和各路大神聊天。如果想和我做朋友,可以关注微博:@史中方枪枪,或者搜索微信:shizhongok

不想走丢的话,你也可以关注我的公众号“浅黑科技”



----点击图片阅读更多精彩文章----



----想看更多请点击下方阅读原文----




中国黑客的精神食粮

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存